﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace WindowsFormsApplication1
{
    enum TerminDzien
    {
        T_MON,
        T_TUE,
        T_WED,
        T_THU,
        T_FRI,
        T_SAT,
        T_SUN,
        T_WEEK,
        T_WEND,
        T_ALL
    }

    public class LekarzTime
    {
        public Int32 Hour;
        public Int32 Minutes;

        public LekarzTime(String _time)
        {
            System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex(":");
            String[] time = regex.Split(_time);
            Hour = System.Convert.ToInt32(time[0]);
            Minutes = System.Convert.ToInt32(time[1]);
        }

        public override string ToString()
        {
            return Hour + ":" + (Minutes < 10 ? "0" : "") + Minutes;
        }
    }

    class LekarzTermin
    {
        public TerminDzien dzien;
        public LekarzTime godzStart;
        public LekarzTime godzEnd;

        public LekarzTermin(TerminDzien _dzien, LekarzTime start, LekarzTime end)
        {
            dzien = _dzien;
            godzStart = start;
            godzEnd = end;
        }

        public override string ToString()
        {
            return godzStart + " - " + godzEnd;
        }
    }

    class Lekarz
    {
        private Int32 lekarzId;
        private String imie;
        private String nazwisko;
        private Int64 PESEL;
        private List<LekarzTermin> terminy;

        public Lekarz(Int32 ID, String _imie, String _nazwisko, Int64 _PESEL)
        {
            lekarzId = ID;
            imie = _imie;
            nazwisko = _nazwisko;
            PESEL = _PESEL;
            terminy = new List<LekarzTermin>();
        }

        public static TerminDzien ToTerminDzien(String str)
        {
            switch (str)
            {
                case "MON": return TerminDzien.T_MON; 
                case "TUE": return TerminDzien.T_TUE;
                case "WED": return TerminDzien.T_WED;
                case "THU": return TerminDzien.T_THU;
                case "FRI": return TerminDzien.T_FRI;
                case "SAT": return TerminDzien.T_SAT;
                case "SUN": return TerminDzien.T_SUN;
                case "ALL_WEEKDAYS": return TerminDzien.T_WEEK;
                case "ALL_WEEKEND": return TerminDzien.T_WEND;
                case "ALL_WEEK": return TerminDzien.T_ALL;
            }

            return TerminDzien.T_ALL;
        }

        public override String ToString()
        {
            return imie + " " + nazwisko;
        }

        public void AddTermin(TerminDzien dzien, LekarzTime godzStart, LekarzTime godzEnd)
        {
            terminy.Add(new LekarzTermin(dzien, godzStart, godzEnd));
        }

        public Int32 GetId()
        {
            return lekarzId;
        }

        public List<LekarzTermin> GetTerminy()
        {
            return terminy;
        }
    }

}
